package cn.itcast;

/**
 * 注解
 * 注解其实最初的定义只是用来说明程序的   -->给计算机写注释的
 * 作用分类：
 * 1.编写文档   -->这种注释里面写的 @param这种 ， 他会帮助生成文档
 * 2.代码分析   -->常用
 * 3.编译检查   -->@OverRide
 *
 * jdk常用注解
 * @Override :检测该注解标注的方法是否是继承父类或接口
 * @Deprecated：标注该注解标注的方法已过时
 * @SupressWarnings：压制警告
 *
 *
 * 自定义注解：
 *      1.元注解
 *      public @interface 名称
 *      通过反编译可以看出来自定义注解中加勒德那个@interface其实就是继承了Annotation类
 *      本质就是
 *      public interface MyAnno extends java.lang.annotation.Annotation { }
 *
 *      注解的属性
 *          1.返回值取值要求
 *              基本数据类型
 *              String
 *              注解类型
 *              枚举类型
 *              不能是 void
 *     详见MyAnno1
 * 元注解
 * @Target：描述注解作用的位置 type->类 method->方法
 * @Retention 描述注解能够保留到java代码的哪一个阶段     ->一般是Retention.RunningTime
 * @Documented 描述注解将来是否会被抽取到Api文档中
 * @Inherited 描述注解是否被子类继承
 */

public class App1 extends Object{
    public static void main(String[] args) {
        int i = 1 / 0 ;
    }
}
